# -*- coding: utf-8 -*-
"""
爬虫：工程师写脚本取采集对方数据的行为
反爬虫：对方想尽办法不让我用脚本采集的行为
反反爬虫：工程师想尽办法突破对方设置采集了对方的数据
"""

"""
反爬虫技巧：
1.检测User-Agent是否为浏览器
2.检测IP的访问频率
3.检测Cookie中的字段

4.验证码
5.参数进行js动态加密
6.字体加密
"""


"""
反反爬虫技巧
1.手动构造请求头，设置User-Agent
2.设置Download_Delay = 2
3.禁用Cookie/手段粘贴Cookie访问
4.捕获验证码的条件（云打码，OCR光学识别，手动验证，github搜索破解方式）
验证码的类型：
（1）图片滑动
（2）数字字母
（3）输入表达式的值
5.分析网页，找到js文件，使用pyexecjs模拟js解密
6.分析字体对应的.ttf文件，研究编码
"""

"""
爬取技巧
1.爬取app比爬取web简单，  app中没有js文件
2.如果请求（http/https）看不到，则可能是基于socket的请求
3.常用的抓包工具（charles/fiddle）只能抓取http/https
wireshark可以抓取任意请求，可以采集基于socket的请求
mitmproxy 抓取手机请求框架
4.模拟浏览器行为
python：selenium
nodejs：puppeteer
5.可视化爬虫
gerapy：分布式爬虫管理框架
6.app安装包的反编译
"""

"""
面试题
如果分布式爬虫中有两台电脑死机或没有爬虫，如何监控
类似于点名，定时检索每台电脑是否存活
每台电脑定时通过redis发送数据
"""
